package com.chenglu.android.payment.mvp.contract;



import com.chenglu.android.common.base.BaseView;
import com.chenglu.android.mine.bean.AddressListBean;
import com.chenglu.android.payment.bean.ComfirmOrderBean;
import com.chenglu.android.payment.bean.CouponListBean;
import com.chenglu.android.payment.bean.PayOrderBean;
import com.chenglu.android.payment.bean.PayTypeConfig;
import com.chenglu.android.payment.bean.PostDayBean;
import com.chenglu.android.payment.bean.PostTimeListBean;
import com.chenglu.android.payment.bean.TenantIdPayMethod;

import io.reactivex.rxjava3.core.Observable;
import okhttp3.RequestBody;

/**
 * @author: lyj
 * @Created by Copyright 2023/3/2 Guangzhou Hongma Technology Co., Ltd. All rights reserved.
 *
 */
public interface ComfirmOrderContract {

    /**
     *
     * @description model
     *
     */

    //    case shop = 1                /// 商超
//    case restaurant = 2          /// 餐饮
//    case beauty = 3              /// 美业
//    case education = 4           /// 教育
//    case minimart = 8            /// 便利店
//    case pharmaceuticals = 9     /// 药店
//    case breed = 10              /// 孕育

    public interface ComfirmOrderModel{

        //************************start 预订单的接口=======================================//
        Observable<ComfirmOrderBean> getComfirmOrder(String token, RequestBody requestBody);

        //餐饮的接口
        Observable<ComfirmOrderBean> getRestaurantComfirmOrder(String token, RequestBody requestBody);

        //美业
        Observable<ComfirmOrderBean> getBeautyComfirmOrder(String token, RequestBody requestBody);

        //教育
        Observable<ComfirmOrderBean> getEducationComfirmOrder(String token, RequestBody requestBody);
        //便利店
        Observable<ComfirmOrderBean> getMinimartComfirmOrder(String token, RequestBody requestBody);

        Observable<ComfirmOrderBean> getPharmaceuticalsComfirmOrder(String token, RequestBody requestBody);

        Observable<ComfirmOrderBean> getBreedComfirmOrder(String token, RequestBody requestBody);

        //************************end 预订单的接口=======================================//

        //************************start 生成订单的接口=======================================//

        Observable<ComfirmOrderBean> getGenerateOrder(String token, RequestBody requestBody);

        Observable<ComfirmOrderBean> getRestaurantGenerateOrder(String token, RequestBody requestBody);

        Observable<ComfirmOrderBean> getBeautyGenerateOrder(String token, RequestBody requestBody);

        Observable<ComfirmOrderBean> getEducationGenerateOrder(String token, RequestBody requestBody);

        Observable<ComfirmOrderBean> getMinimartGenerateOrder(String token, RequestBody requestBody);

        Observable<ComfirmOrderBean> getPharmaceuticalsGenerateOrder(String token, RequestBody requestBody);

        Observable<ComfirmOrderBean> getBreedGenerateOrder(String token, RequestBody requestBody);


        //************************end 生成订单的接口=======================================//

        //************************start 优惠卷的接口=======================================//

        Observable<CouponListBean> getCouponList(String token, RequestBody requestBody);

        Observable<CouponListBean> getRestaurantCouponList(String token, RequestBody requestBody);

        Observable<CouponListBean> getBeautyCouponList(String token, RequestBody requestBody);

        Observable<CouponListBean> getEducationCouponList(String token, RequestBody requestBody);

        Observable<CouponListBean> getMinimartCouponList(String token, RequestBody requestBody);

        Observable<CouponListBean> getPharmaceuticalsCouponList(String token, RequestBody requestBody);

        Observable<CouponListBean> getBreedCouponList(String token, RequestBody requestBody);


        //************************ end 优惠卷的接口=======================================//
        //支付配置
        Observable<PayTypeConfig> getPayTypeConfig(String shopsTypeId);

        //店铺类型的支付方式
        Observable<TenantIdPayMethod> getenantIdPayMethod(String token,String payClient, String tenantId);

        Observable<PayOrderBean> getPayOrder(String token, RequestBody requestBody);

        Observable<AddressListBean> getAddressList(String token);

        Observable<PostDayBean> getPostDayList();

        Observable<PostTimeListBean> getPostTimeList(int type);

    }


    /**
     *
     * @description view
     *
     */

    interface View extends BaseView {
        @Override
        void showLoading();

        @Override
        void dismissLoading();

        @Override
        void onEmpty(Object tag);

        @Override
        void onError(String errMessage);


        void getComfirmOrder(ComfirmOrderBean bean);

        void getCouponList(CouponListBean bean);

        void getPayTypeConfig(PayTypeConfig bean);

        void getenantIdPayMethod(TenantIdPayMethod bean);

        void getGenerateOrder(ComfirmOrderBean bean);

        void getPayOrder(PayOrderBean bean);

        void getAddressList(AddressListBean bean);


        void getPostDayList(PostDayBean bean);

        void getPostTimeList(PostTimeListBean bean);

    }

    /**
     *
     * @description presenter
     *
     */

    interface ComfirmOrderPresenter {



        void getComfirmOrder(String token,RequestBody requestBody,int shopsTypeId);

        void getCouponList(String token,RequestBody requestBody,int shopTypeId);

        void getPayTypeConfig(String shopTypeId);

        void getenantIdPayMethod(String token,String payClient,String tenantId);

        void getGenerateOrder(String token,RequestBody requestBody,int shopsTypeId);

        void getPayOrder(String token,RequestBody requestBody);

        void getAddressList(String token);


        void getPostDayList(int shopsTypeId);

        void getPostTimeList(int type,int shopsTypeId);


    }
}